package  main.java.leetcode.editor.cn;
//2022-04-08 18:34:36
//给定两个字符串 s1 和 s2，写一个函数来判断 s2 是否包含 s1 的某个变位词。 
//
// 换句话说，第一个字符串的排列之一是第二个字符串的 子串 。 
//
// 
//
// 示例 1： 
//
// 
//输入: s1 = "ab" s2 = "eidbaooo"
//输出: True
//解释: s2 包含 s1 的排列之一 ("ba").
// 
//
// 示例 2： 
//
// 
//输入: s1= "ab" s2 = "eidboaoo"
//输出: False
// 
//
// 
//
// 提示： 
//
// 
// 1 <= s1.length, s2.length <= 104 
// s1 和 s2 仅包含小写字母 
// 
//
// 
//
// 注意：本题与主站 567 题相同： https://leetcode-cn.com/problems/permutation-in-string/ 
// Related Topics 哈希表 双指针 字符串 滑动窗口 
// 👍 35 👎 0

import java.util.Arrays;

class MPnaiL {
    public static void main(String[] args) {
        //创建该题目的对象方便调用
        Solution solution = new MPnaiL().new Solution();
        solution.checkInclusion("adc","dadc");
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public boolean checkInclusion(String s1, String s2) {
        if(s1.length()>s2.length()){
            return false;
        }
        int n = s1.length();  //窗口划分的范围
        char[] chars1 = s1.toCharArray();
        Arrays.sort(chars1);
        for(int left = 0;left<=s2.length()-n;left++){
            char[] test = new char[n];
            int i =0;
            int key = left;
            for(int right = left;right<key+n;right++){
                test[i] = s2.charAt(right);
                i++;
            }
            Arrays.sort(test);
            if(Arrays.equals(chars1,test)){
                return true;
            }
        }
        return false;


    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
